package main

import (
	"fmt"
)

func main() {
	//声明数组
	numbers := []int{5, 2, 4, 3, 1}
	//获取数组长度
	length := len(numbers)

	//遍历数组
	for i := 0; i < length; i++ {
		//最小元素下标
		minIndex := i
		for j := i + 1; j < length; j++ {
			//重复挑选 `最小/最大`的元素 ，放在起始位置
			if numbers[j] < numbers[minIndex] {
				//如果满足交换条件，设置最小位置
				minIndex = j
			}
		}
		swap := fmt.Sprintf("%v", numbers)
		//判断是否需要交换数据
		if i != minIndex {
			numbers[i], numbers[minIndex] = numbers[minIndex], numbers[i]
		}

		fmt.Printf("\n第 %d 次找到最小元素位置：`%d` ，值为 `%d` ,排序结果如下：\n\n", i+1, minIndex, numbers[i])

		fmt.Printf("%s => %v \n", swap, numbers)

	}

	fmt.Println("\n最终结果如下：\n")
	//排序完成
	fmt.Println(numbers)

}
